package com.wdb.modules.security.service;

import cn.hutool.core.util.StrUtil;
import com.wdb.modules.security.config.bean.LoginProperties;
import com.wdb.modules.security.service.dto.JwtUserDto;
import com.wdb.utils.RedisUtils;
import com.wdb.utils.StringUtils;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * 用户缓存管理
 *
 * @author: wendaobai@qq.com
 * @date: 2024/1/10 0010 16:17
 */
@Component
public class UserCacheManager {

  @Resource private RedisUtils redisUtils;
  /**
   * 获取用户缓存
   *
   * @param userName
   * @return
   */
  public JwtUserDto getUserCache(String userName) {
    if (StrUtil.isNotBlank(userName)) {
      // 获取数据
      Object obj = redisUtils.get(LoginProperties.cacheKey + userName);
      if (obj != null) {
        return (JwtUserDto) obj;
      }
    }

    return null;
  }

  /**
   * 清理用户缓存信息 用户信息变更时
   *
   * @param userName 用户名
   */
  @Async
  public void cleanUserCache(String userName) {
    if (StringUtils.isNotEmpty(userName)) {
      // 清除数据
      redisUtils.del(LoginProperties.cacheKey + userName);
    }
  }
}
